//定义全局函数
import config from '@/common/config'
import {
	aes_encrypt,
	aes_decrypt,
	format_duration,
	encrypt,
	decrypt,
} from '@/util/aes_endecrypt.js';


function cnName(e, i) {
	let name = "";
	let mimeMap = {};
	mimeMap[i] = '系统文件夹';
	if (mimeMap[e]) {
		name = mimeMap[e];
	}
	return name ? name : e;
}

function uv_image(e, w = 0, type = '') {
	let src = "/",
		con = null;
	if (e.content && e.content[0]) {
		con = e.content[0];
	}
	if (e?.content && e?.content[1]) {
		con = e.content[1];
	}
	if (e?.cover) {
		src = e.cover
	}
	if (con?.cover) {
		src = con.cover
	}
	if (con?.data && con?.data[0]) {
		src = con.data[0].url
	}
	if (con?.imageUrl) {
		src = con.imageUrl
	}
	if (con?.videoFirstFrame) {
		src = con.videoFirstFrame
	}
	if (con?.targetImage) {
		src = con.targetImage
	}
	if (con?.images) {
		src = con.images[0]
	}
	if (con?.url) {
		src = con.url
	}
	if (con?.musics) {
		src = con.musics[0].imageUrl
	}
	if (src != '/') {
		if (w == 0) {
			if (uni.$uv.os() === 'ios' || uni.$uv.os() === 'android') {
				w = 250;
			} else {
				w = 450;
			}
		}
		src = src + '?x-oss-process=image/resize,w_' + w + ',m_lfit/format,' + (type ? type : 'webp');
	}
	return src;
}

function uvImages(e, w = 0, type = '') {
	let src = [],
		con = null;
	if (e.content && e.content[0]) {
		con = e.content[0];
	}
	if (e.content && e.content[1]) {
		con = e.content[1];
	}
	if (con?.data && con?.data[0]) {
		src = [con.data[0].url]
	}
	if (con?.imageUrl) {
		src = [con.imageUrl]
	}
	if (con?.videoFirstFrame) {
		src = [con.videoFirstFrame]
	}
	if (e?.targetImage) {
		src = [e.targetImage]
	}
	if (con?.images) {
		src = con.images
	}
	if (con?.url) {
		src = [con.url]
	}
	if (con?.musics) {
		for (var i = 0; i < con.musics.length; i++) {
			src.push(con.musics[i].imageUrl)
		}
	}
	return src;
}

function download(url, fileName = '') {
	try {
		// uni.$uv.http.download('/ai/file/audio/fa462c79-4927-452a-9677-c3b2b4f208f1.mp3', {
		// 	params: {},
		// 	/* 会加在url上 */
		// 	// #ifdef H5 || APP-PLUS
		// 	timeout: 3000, // H5(HBuilderX 2.9.9+)、APP(HBuilderX 2.9.9+)
		// 	// #endif
		// 	header: {},
		// 	/* 会与全局header合并，如有同名属性，局部覆盖全局 */
		// 	custom: {
		// 		auth: true,
		// 		toast: false,
		// 		catch: true,
		// 	}, // 自定义参数
		// 	// 返回当前请求的task, options。非必填
		// 	getTask: (task, options) => {
		// 		// setTimeout(() => {
		// 		//   task.abort()
		// 		// }, 500)
		// 	},
		// 	//validateStatus: (statusCode) => { // statusCode 必存在。此处示例为全局默认配置。演示，非必填选项
		// 	//	return statusCode >= 200 && statusCode < 300
		// 	//}
		// }).then(res => {
		// 	console.log(JSON.stringify(res));
		// 	// #ifdef H5
		// 	let url = window.URL.createObjectURL(new Blob([res]));
		// 	let oA = document.createElement("a");
		// 	// 设置下载的文件名，不设置就是默认的
		// 	oA.download = '';
		// 	oA.setAttribute("target", "_blank");
		// 	// 下载链接
		// 	oA.href = url;
		// 	document.body.appendChild(oA);
		// 	oA.click();
		// 	oA.remove(); // 下载之后把创建的元素删除
		// 	window.URL.revokeObjectURL(url); // 释放掉blob对象
		// 	// #endif
		// }).catch(err => {
		// 	console.log(err);
		// })
		// console.log(aes_decrypt(uni.getStorageSync('lifeData')['vuex_token']));
		// return;
		// const url = 'http://192.168.0.1:8080/fileApi/logo.png'
		uni.downloadFile({
			url: url,
			header: {
				'Authorization': "Bearer " + aes_decrypt(uni.getStorageSync('lifeData')['vuex_token'])
			},
			success(res) {
				// console.log(JSON.stringify(res));
				// 这时会产生一个临时路径，在应用本次启动期间可以正常使用。
				if (res.statusCode == 200) {
					// 检查是否为图片类型
					const suffix = fileName.split('.').pop().toLowerCase() || url.split('.').pop()
						.toLowerCase();
					const isImage = config.imageTypes.includes(suffix);
					if (!fileName) {
						fileName = url.split('/').pop();
					}

					// #ifdef H5
					let link = document.createElement("a");
					link.setAttribute("target", "_blank");
					link.download = fileName; // 设置下载的文件名，不设置就是默认的
					link.href = res.tempFilePath; // 图片下载链接
					document.body.appendChild(link);
					link.click();
					link.remove(); // 下载之后把创建的元素删除
					// #endif
					// #ifndef H5
					if (isImage) {
						// 需要将图片保存到相册
						const saveToAlbum = (filePath) => {
							uni.saveImageToPhotosAlbum({
								filePath: filePath, // 图片文件路径，可以是临时文件路径也可以是永久文件路径，不支持网络图片路径
								success(res) {
									uni.showToast({
										title: '保存成功',
										icon: 'none'
									})
									// 如果保存成功需要打开查看，请使用以下方法，同时也支持打开文件
									uni.openDocument({
										filePath: escape(res.tempFilePath),
										success(res) {},
										fail(err) {
											uni.showToast({
												title: '手机不支持该文件类型，请安装wps或office应用',
												icon: 'none'
											})
										}
									})
								},
								fail(err) {
									console.error(err);
									uni.showToast({
										title: '图片保存失败，请检查权限',
										icon: 'none'
									})
								}
							})
						};
						// APP 端权限处理
						// #ifdef APP-PLUS
						uni.authorize({
							scope: 'scope.writePhotosAlbum',
							success: () => saveToAlbum(res.tempFilePath),
							fail: () => {
								uni.showModal({
									title: '权限提示',
									content: '需要相册权限保存图片',
									success: (modalRes) => {
										if (modalRes.confirm) uni.openSetting();
									}
								});
							}
						});
						// #else
						saveToAlbum(res.tempFilePath);
						// #endif
					} else {
						// 非图片文件直接打开
						uni.openDocument({
							filePath: res.tempFilePath,
							showMenu: true,
							fail: () => {
								uni.showToast({
									title: '无法打开文件',
									icon: 'none'
								});
							}
						});
					}
					// #endif
				} else {
					console.error(res);
					uni.showToast({
						title: '下载失败，状态码异常',
						icon: 'none'
					})
				}
			},
			fail(err) {
				console.error(err);
				uni.showToast({
					title: '下载失败，请检查网络',
					icon: 'none'
				})
			}
		})
	} catch (error) {
		uni.$uv.toast(error);
	}
}
//导出
module.exports = {
	uv_image,
	download,
	encrypt,
	decrypt,
}